Data Analysis¶
In [1]:
Copied!
import numpy as np
import hvplot.xarray
import holoviews as hv
from rasterio.enums import Resampling
from conflict_monitoring_ntl.case_studies import get_county_ids, get_date
from conflict_monitoring_ntl.viz import plot_tile_comparison, plot_binary
from conflict_monitoring_ntl.utils import get_gdf_for_admin
from conflict_monitoring_ntl.satellites import BlackMarble, SDGSat
from conflict_monitoring_ntl.transform import RasterPipeline
import numpy as np
import hvplot.xarray
import holoviews as hv
from rasterio.enums import Resampling
from conflict_monitoring_ntl.case_studies import get_county_ids, get_date
from conflict_monitoring_ntl.viz import plot_tile_comparison, plot_binary
from conflict_monitoring_ntl.utils import get_gdf_for_admin
from conflict_monitoring_ntl.satellites import BlackMarble, SDGSat
from conflict_monitoring_ntl.transform import RasterPipeline
In [2]:
Copied!
import warnings
warnings.filterwarnings('ignore',
message='Connection pool is full, discarding connection*',
module='urllib3.connectionpool'
)
import warnings
warnings.filterwarnings('ignore',
message='Connection pool is full, discarding connection*',
module='urllib3.connectionpool'
)
In [3]:
Copied!
import logging
logging.getLogger("pyogrio._io").setLevel(logging.WARNING)
import logging
logging.getLogger("pyogrio._io").setLevel(logging.WARNING)
In [4]:
Copied!
SDGSAT_THRESHOLDS = np.arange(1.0, 2.1, 0.1).tolist()
BM_THRESHOLDS = np.arange(0.5, 2.1, 0.1).tolist()
SDGSAT_THRESHOLDS = np.arange(1.0, 2.1, 0.1).tolist()
BM_THRESHOLDS = np.arange(0.5, 2.1, 0.1).tolist()
In [5]:
Copied!
rasters = [SDGSat(), BlackMarble()]
rasters = [SDGSat(), BlackMarble()]
Radiance Conversion and Band Scaling
- L denotes the radiance intensity at the entrance pupil of the sensor.
- L is measured in units of W/m²/sr/µm (watts per square meter per steradian per micrometer).
- DN represents the original digital number (pixel value) of the image.
- Gain is the amplification factor; Bias is the offset for radiometric calibration.
Radiance Calculation
$$ L = DN \times \text{Gain} + \text{Bias} $$
Conversion to nW/cm²/sr
To convert GLI band radiance to the brightness unit nW/cm²/sr(same as Black Marble), multiply by the bandwidth (in microns) and a SI scaling factor.
$$ \text{Radiance}_{(\text{nW}/\text{cm}^2/\text{sr})} = L_{(\text{W}/\text{m}^2/\text{sr}/\mu\text{m})} \times 10^5 \times \text{bandwidth}_{\mu\text{m}} $$
Sudan¶
In [6]:
Copied!
country = "Sudan"
date, county_id = get_date(country), get_county_ids(country)[0]
county_gdf = get_gdf_for_admin(county_id)
transformations = [{"reproject_match": {"resampling": Resampling.bilinear}}, {}]
pipeline = RasterPipeline(county_gdf, date, rasters, transformations)
ds = pipeline.run()
country = "Sudan"
date, county_id = get_date(country), get_county_ids(country)[0]
county_gdf = get_gdf_for_admin(county_id)
transformations = [{"reproject_match": {"resampling": Resampling.bilinear}}, {}]
pipeline = RasterPipeline(county_gdf, date, rasters, transformations)
ds = pipeline.run()
In [7]:
Copied!
plot_tile_comparison(
arr_left=ds.sdgsat_radiance,
arr_right=ds.black_marble_radiance,
title_left="SDGSat radiance (nW/cm²/sr)",
title_right="Black Marble radiance (nW/cm²/sr)",
clim_left=(7, 7.5),
clim_right=(0, 2)
)
plot_tile_comparison(
arr_left=ds.sdgsat_radiance,
arr_right=ds.black_marble_radiance,
title_left="SDGSat radiance (nW/cm²/sr)",
title_right="Black Marble radiance (nW/cm²/sr)",
clim_left=(7, 7.5),
clim_right=(0, 2)
)
Out[7]:
In [8]:
Copied!
binary_dict_sdgsat = {t: plot_binary(ds.sdgsat_dn, "SDGSat", t) for t in SDGSAT_THRESHOLDS}
hv.HoloMap(binary_dict_sdgsat, kdims='threshold')
binary_dict_sdgsat = {t: plot_binary(ds.sdgsat_dn, "SDGSat", t) for t in SDGSAT_THRESHOLDS}
hv.HoloMap(binary_dict_sdgsat, kdims='threshold')
Out[8]:
In [9]:
Copied!
curve_dict_bm = {t: plot_binary(ds.black_marble_radiance, "Black Marble", t) for t in BM_THRESHOLDS}
hv.HoloMap(curve_dict_bm, kdims='threshold')
curve_dict_bm = {t: plot_binary(ds.black_marble_radiance, "Black Marble", t) for t in BM_THRESHOLDS}
hv.HoloMap(curve_dict_bm, kdims='threshold')
Out[9]:
Out[11]:
Out[12]:
Out[13]:
South Sudan¶
Out[15]:
Out[16]:
Out[17]: